home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr28 / netest.zip / BATLITE.DOC next >
Text File  |  1992-03-15  |  14KB  |  351 lines

  1.  
  2.  
  3.                                       BatLite
  4.  
  5.  
  6.  
  7.             Version:          1.5
  8.  
  9.             Released:         12 March, 1992
  10.  
  11.             Author:           Pieter A. Hintjens
  12.  
  13.             Address:          Oedenkovenstraat 38,          
  14.                               2140 Antwerpen,     
  15.                               Belgium
  16.  
  17.             Telephone:        (323) 271.0509  [voice/data/fax]
  18.  
  19.             Copyright:        (C)  1991-92  Pieter  A.  Hintjens.    All
  20.                               rights retained by the author.
  21.  
  22.             Distribution:     Free.   May not  be sold.   May be bundled
  23.                               with other  products or  services  without
  24.                               restriction so  long as this documentation
  25.                               accompanies  the   program  BatLite,   and
  26.                               neither is modified.
  27.  
  28.             Disclaimer:       This   product    is   delivered   without
  29.                               guarantee of  any kind.   The  contents of
  30.                               this document are for information purposes
  31.                               only.   While the  author has  taken great
  32.                               care  to  ensure  that  this  software  is
  33.                               reliable and  useful, liability for use of
  34.                               this program rests entirely with the user.
  35.                               The author  reserves the  right to  change
  36.                               any information  in this  document without
  37.                               notice.
  38.  
  39.             Registration:     Optional.   If you find BatLite convenient
  40.                               and useful,  you can  register by  sending
  41.                               $25 (BEF  750, UK£  12.50)  to  the  above
  42.                               address.   Please state  which version  of
  43.                               BatLite you are using.  When you register,
  44.                               you'll be  placed on  my mailing list, and
  45.                               get  the  next  version  of  BatLite  when
  46.                               available.
  47.  
  48.  
  49.  
  50.                                    Introduction
  51.  
  52.  
  53.  
  54.             BatLite compiles a .BAT file into a .COM file.  The .COM file
  55.           loads and  runs quickly, and has other advantages over a normal
  56.           .BAT file:
  57.  
  58.              - repetitive texts  are compressed.   For big batch files
  59.                the savings can reach 50% or more.
  60.  
  61.              - BatLite compiles  GOTOs into  direct jumps.    This  is
  62.                quite a  bit faster  than DOS's method of searching the
  63.                batch file line by line starting at the beginning.
  64.  
  65.              - the compiled  batch file  is tamper-proof.   It resists
  66.                casual examination  and cannot  be changed  without the
  67.                original source.
  68.  
  69.              - the compiled  batch file  runs  entirely  from  memory.
  70.                This allows  you to  create an install batch file which
  71.                loads from the first of several installation diskettes,
  72.                then continues  to run  after  the  first  diskette  is
  73.                removed.  Impossible with a normal DOS batch file.
  74.  
  75.             BatLite is free.  You can use it privately, in business, on a
  76.           network, or  include it in your products.  If BatLite gives you
  77.           a competitive  edge, so  much the  better.   However, you  must
  78.           supply this  documentation, unchanged, with any copy of BatLite
  79.           that you distribute.  If you want regular updates and telephone
  80.           support, register as described above.
  81.  
  82.  
  83.  
  84.                                    Using BatLite
  85.  
  86.  
  87.  
  88.             Place BatLite.EXE  in the  current directory or in some other
  89.           directory which is on your path.  To run BatLite, just give the
  90.           command:
  91.  
  92.                BatLite batchfile
  93.  
  94.             Or, you can BatLite several files at once:
  95.  
  96.                BatLite *.bat
  97.  
  98.             You do not need to supply the .BAT extension.  Each .BAT file
  99.           is converted  into a  .COM file  with the  same name.   Thus, a
  100.           batch file  `INSTALL.BAT' becomes `INSTALL.COM'.  The .BAT file
  101.           is not  modified in any way.  To run the .COM file, simply type
  102.           its name  at the  DOS command prompt.  If a file exists in both
  103.           .BAT and .COM forms, MS-DOS will always run the .COM file.
  104.  
  105.             For a quick summary of BatLite options, type:
  106.  
  107.                BatLite/?
  108.  
  109.             BatLite supports  all  MS-DOS  commands  from  versions  2.11
  110.           upwards, with  some minor  exceptions (see  later).    The  DOS
  111.           redirection and  pipe commands (<, >, and |) work as they do in
  112.           a normal batch file.
  113.  
  114.             By default,  a compiled  batch file will halt after executing
  115.           another batch  file.    This  behaviour  is  identical  to  the
  116.           behaviour of  a normal  DOS batch  file.   If you  use the CALL
  117.           command, BatLite  continues, like DOS versions 3.3 and up.  You
  118.           can ask  BatLite to continue in any case by running it with the
  119.           `/Nobatch' switch.   If  you use  this switch, a compiled batch
  120.           file will continue after executing another batch file.
  121.  
  122.             You can  interrupt the  execution of a compiled batch file by
  123.           pressing Ctrl-C.   This displays `^C' and ends the execution of
  124.           the compiled batch file.  To avoid problems with MS-DOS, Ctrl-C
  125.           is not  handled at  once,  but  when  the  current  command  is
  126.           finished.   If you  do not  want this  possibility, run BatLite
  127.           with the `/NoCtrlC' switch.  If you use this switch, the person
  128.           who runs  the compiled batch file will not be able to break out
  129.           using Ctrl-C.
  130.  
  131.             You can abbreviate any switch to a minimum unique name.
  132.  
  133.             Example:    BatLite/nob/noc *.bat
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.                                     Limitations
  143.  
  144.  
  145.  
  146.             1. BatLite can  cope with  all MS-DOS  commands except the
  147.                command `FOR....DO  GOTO...'.   This is because the FOR
  148.                command is  so complex  that BatLite passes it directly
  149.                to MS-DOS  to execute.   Since GOTO's are compiled into
  150.                fast jumps  which MS-DOS  knows nothing about, the GOTO
  151.                in a FOR command will have no effect.
  152.  
  153.             2. The  replaceable   parameter  %0   is  ignored.     The
  154.                parameters %1  to  %9  work  as  usual,  also  in  GOTO
  155.                statements.
  156.  
  157.             3. BatLite will  compile and  run batch files of up to 48k
  158.                in size.
  159.  
  160.             4. A compiled  batch file  requires some  memory  to  run,
  161.                whereas a  normal batch file does not.  This means that
  162.                very large  programs may not run from within a compiled
  163.                batch file  while they do run from a normal batch file.
  164.                The smallest  compiled batch  file will  use about  2.5
  165.                Kbytes of memory when running.
  166.  
  167.             5. BatLite does not work with the 4DOS command shell, ver.
  168.                3.01 or  lower.  This is due to an area where 4DOS does
  169.                not behave  like COMMAND.COM.   The  authors,  J.    P.
  170.                Software, plan to implement the necessary support; this
  171.                may already be working in the latest releases of 4DOS.
  172.  
  173.             6. BatLite has  been tested  with  MS-DOS  versions  2.11,
  174.                3.20, 3.30,  4.01, and  5.00.   It has not been tested,
  175.                but should  work with  any other DOS version, including
  176.                DR-DOS  versions.    See  below  for  limitations  with
  177.                untested DOS versions.
  178.  
  179.             7. If you  have a  TSR which  takes over  interrupt vector
  180.                2Eh, you  cannot access environment variables which are
  181.                SET in the same batch file.
  182.  
  183.             8. A compiled  batch file  requires some  help  from  DOS.
  184.                Don't try  to run  a batch  file which  uses  DOS  5.00
  185.                commands under DOS 2.11.  It won't work.
  186.  
  187.             Under DOS  versions _other_than_  MS-DOS  2.11,  3.20,  3.30,
  188.           4.01, or  5.00, a  compiled batch file is not re-entrant.  This
  189.           means that  if you  start one  compiled batch  file,  and  from
  190.           within that  one you start another (even via a series of spawns
  191.           and other programs), DOS gets confused and never returns to the
  192.           original compiled batch file.  Neither can you start a compiled
  193.           batch file  from a normal batch file.  This happens because the
  194.           command interpreter  (COMMAND.COM) loses track of who was doing
  195.           what.   BatLite gives  COMMAND.COM a  hand, but  only for those
  196.           versions of MS-DOS which I have tested.
  197.  
  198.             I will add support for additional DOS versions on demand.  If
  199.           you have  a DOS  version not  listed here, or if compiled batch
  200.           files do  not seem  to be re-entrant, send me a system diskette
  201.           with COMMAND.COM  and DEBUG  on it.   I'll  add  the  necessary
  202.           support to  BatLite, and  send you  your diskette  back with  a
  203.           complimentary copy  of BatLite.   I'll  do this  for the  first
  204.           person to  send me  any particular  version, and  I don't think
  205.           it's worth looking at DOS versions before 2.11.
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.                                    Enhancements
  213.  
  214.  
  215.  
  216.             Some normal  DOS commands  are so poorly implemented that the
  217.           temptation to  improve on God's work was irresistible.  I plead
  218.           the case  that  these  enhancements  will  be  most  useful  in
  219.           installation-type batch  files, which cannot run as actual .BAT
  220.           files anyway  (a batch  file cannot  survive if  you remove the
  221.           diskette it  was sitting  on).   If you want to keep your batch
  222.           files 100% DOS compatible, don't rely on these improvements:
  223.  
  224.             1. The IF  EXIST command  will work  for subdirectories as
  225.                well as for normal files.  For example:
  226.  
  227.                if not exist c:\abcdemo mkdir c:\abcdemo
  228.  
  229.                The classic  IF EXIST  command works  with directories,
  230.                but only if they contain one or more files:
  231.  
  232.                if not exist c:\abcdemo\*.* ...
  233.  
  234.             2. BatLite emulates DOS's action in halting after a second
  235.                batch file  is called from inside the first.  If you do
  236.                not  want   this  to   happen,  run  BatLite  with  the
  237.                `/Nobatch' switch.   Then,  if you start a second batch
  238.                file from  the compiled  batch file, the compiled batch
  239.                file  does  not  halt,  but  continues  with  the  next
  240.                statement.
  241.  
  242.             3. The EXIT  command has  the effect  of halting the batch
  243.                file.   This is  a useful  subsititute for using a goto
  244.                statement to jump to the end of a batch file.
  245.  
  246.  
  247.  
  248.                                   Release History
  249.  
  250.  
  251.  
  252.             91/08/23  1.0     Limited beta-test release.
  253.  
  254.             91/08/28  1.1     General release.   Added  full support for
  255.                               IF statement,  environment variables,  and
  256.                               compiled jumps.
  257.  
  258.             91/08/30  1.11    Maintenance release.   Corrected  handling
  259.                               of @ at start of line.
  260.  
  261.             91/09/01  1.2     General  release.      Added   re-entrancy
  262.                               support for  MS-DOS versions  2.11,  3.20,
  263.                               3.30, 4.01, and 5.00.
  264.  
  265.             91/09/15  1.3     General  release.    Optimised  code,  and
  266.                               improved   memory   allocation   strategy.
  267.                               Corrected bug  in handling  of `IF  EXIST'
  268.                               command.   Added ability  to call compiled
  269.                               batch file  from standard  batch file  for
  270.                               MS-DOS versions  2.11, 3.20,  3.30,  4.01,
  271.                               and 5.00.
  272.  
  273.             91/11/10  1.31    Maintenance release.   Corrected  handling
  274.                               of `IF  %sym%==...' command, which blocked
  275.                               the  machine.    Added  support  for  EXIT
  276.                               command.   Increased maximum size of batch
  277.                               file from  16k to 48k.  Corrected handling
  278.                               of SET  command and environment variables;
  279.                               these did not work correctly.
  280.  
  281.             92/02/20  1.4     General release.    Improved  the  BatLite
  282.                               command line  to accept  wildcards.  Added
  283.                               emulation of  DOS in  respect to one batch
  284.                               file  halting   after  starting   another.
  285.                               Compiled batch  files now  return the last
  286.                               errorlevel.    Added  /NoBatch  switch  to
  287.                               BatLite.
  288.  
  289.             92/02/21  1.41    Maintenance release.  Improved handling of
  290.                               Ctrl-C so  that compiled  batch file halts
  291.                               cleanly.  Ctrl-Break is no longer handled.
  292.  
  293.             92/03/14  1.5     General release.  Version 1.41 contained a
  294.                               bug which  caused compiled  .BAT files  to
  295.                               halt prematurely.   Added  /NoCtrlC switch
  296.                               to BatLite, and improved handling of Ctrl-
  297.                               C in compiled batch file.
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.